Systems and methods for stabilizing views of videos

ABSTRACT

A viewing direction may define an angle/visual portion of a spherical video at which a viewing window is directed. A trajectory of viewing direction may include changes in viewing directions for playback of spherical video. Abrupt changes in the viewing directions may result in jerky or shaky views of the spherical video. Changes in the viewing directions may be stabilized to provide stabilized views of the spherical video. Amount of stabilization may be limited by a margin constraint.

FIELD

This disclosure relates to stabilizing views of videos by stabilizingchanges in viewing directions.

BACKGROUND

Viewing directions for a video may include abrupt changes that result ina jerky/shaky view of the video. Such views of the video may decreasethe enjoyability of viewing the video.

SUMMARY

This disclosure relates to stabilizing views of videos. Videoinformation, viewing information for the spherical video content, margininformation, and/or other information may be obtained. The videoinformation may define spherical video content. The spherical videocontent may have a progress length and include spherical video framesthat define visual content viewable from a point of view as a functionof progress through the progress length. The viewing information for thespherical video content may define a trajectory of viewing directionsfor the spherical video content. The trajectory of viewing direction mayinclude viewing directions from the point of view as the function ofprogress through the progress length. The margin information may definea margin constraint that limits deviations from the trajectory ofviewing directions. Stabilized viewing information may be determinedbased on the viewing information, the margin information, and/or otherinformation. The stabilized viewing information may define a stabilizedtrajectory of viewing directions for the spherical video content. Thestabilized trajectory of viewing directions may include stabilizedviewing directions from the point of view as the function of progressthrough the progress length. Differences between the trajectory ofviewing directions and the stabilized trajectory of viewing directionsmay be limited by the margin constraint and/or other information. Thespherical video content may be presented on a display based on thestabilized viewing information and/or other information.

A system that stabilizes views of videos may include one or moreelectronic storages, one or more processors, and/or other components. Anelectronic storage may store video information, information relating tovideo content, viewing information, information relating to viewingdirections, margin information, information relating to marginconstraint, stabilized viewing information, information relating tostabilized viewing directions, and/or other information.

The processor(s) may be configured by machine-readable instructions.Executing the machine-readable instructions may cause the processor(s)to facilitate stabilizing views of videos. The machine-readableinstructions may include one or more computer program components. Thecomputer program components may include one or more of a videoinformation component, a viewing information component, a margininformation component, a stabilization component, a presentationcomponent, and/or other computer program components.

The video information component may be configured to obtain videoinformation and/or other information. The video information may definespherical video content. The spherical video content may have a progresslength. The spherical video content may include spherical video framesthat define visual content viewable from a point of view as a functionof progress through the progress length.

The viewing information component may be configured to obtain viewinginformation for the spherical video content and/or other information.The viewing information may define one or more trajectories of viewingdirections for the spherical video content. A trajectory of viewingdirection may include viewing directions from the point of view as thefunction of progress through the progress length.

In some implementations, the viewing directions from the point of viewmay be defined based on rotations about the point of view. The rotationsabout the point of view may include rotations about one or more axesrunning through the point of view. The axe(s) may include a yaw axis, apitch axis, a roll axis, and/or other axes.

In some implementations, a trajectory of viewing directions may bedefined based on a user's interaction with a display during presentationof the spherical video content on the display and/or other information.

The margin information component may be configured to obtain margininformation and/or other information. The margin information may defineone or more margin constraints. A margin constraint may limit deviationsfrom a trajectory of viewing directions. In some implementations, themargin constraint may include a yaw axis constraint, a pitch axisconstraint, a roll axis constraint, and/or other constraints. In someimplementations, the margin constraint may include a target constraintand/or other constraints. The target constraint may be determined basedon positions of a target in the spherical video frames and/or otherinformation.

The stabilization component may be configured to determine stabilizedviewing information based on the viewing information, the margininformation, and/or other information. The stabilized viewinginformation may define one or more stabilized trajectories of viewingdirections for the spherical video content. A stabilized trajectory ofviewing directions may include stabilized viewing directions from thepoint of view as the function of progress through the progress length.Differences between a trajectory of viewing directions and a stabilizedtrajectory of viewing directions may be limited by the marginconstraint(s). Changes in the stabilized viewing directions may besmoother than changes in the viewing directions.

In some implementations, determination of the stabilized viewinginformation based on the viewing information may include determining atleast a portion of the stabilized trajectory of viewing directions basedon a subsequent portion of the trajectory of viewing directions and/orother information. For example, the trajectory of viewing directions mayinclude a first portion corresponding to a first moment within theprogress length and a second portion corresponding to a second momentwithin the progress length. The second moment may be subsequent to thefirst moment. A portion of the stabilized trajectory of viewingdirections corresponding to the first portion of the trajectory ofviewing directions may be determined based on the second portion of thetrajectory of viewing directions and/or other information.

The presentation component may be configured to present the sphericalvideo content on a display based on the stabilized viewing informationand/or other information.

These and other objects, features, and characteristics of the systemand/or method disclosed herein, as well as the methods of operation andfunctions of the related elements of structure and the combination ofparts and economies of manufacture, will become more apparent uponconsideration of the following description and the appended claims withreference to the accompanying drawings, all of which form a part of thisspecification, wherein like reference numerals designate correspondingparts in the various figures. It is to be expressly understood, however,that the drawings are for the purpose of illustration and descriptiononly and are not intended as a definition of the limits of theinvention. As used in the specification and in the claims, the singularform of “a,” “an,” and “the” include plural referents unless the contextclearly dictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system that stabilizes views of videos.

FIG. 2 illustrates a method for stabilizing views of videos.

FIG. 3 illustrates an example spherical video content.

FIG. 4 illustrates example viewing directions for spherical videocontent.

FIGS. 5A-5B illustrate example extents of spherical video content.

FIG. 6 illustrates an example mobile device for determining viewinginformation for spherical video content.

FIG. 7 illustrates an example trajectory of viewing directions for videocontent.

FIG. 8 illustrates an example margin constraint.

FIG. 9 illustrates example trajectory of viewing direction andstabilized trajectory of viewing directions.

DETAILED DESCRIPTION

FIG. 1 illustrates a system 10 for stabilizing views of videos. Thesystem 10 may include one or more of a processor 11, an interface 12(e.g., bus, wireless interface), an electronic storage 13, a display 14,and/or other components. Video information, viewing information for thespherical video content, margin information, and/or other informationmay be obtained by the processor 11. The video information may definespherical video content. The spherical video content may have a progresslength and include spherical video frames that define visual contentviewable from a point of view as a function of progress through theprogress length. The viewing information for the spherical video contentmay define a trajectory of viewing directions for the spherical videocontent. The trajectory of viewing direction may include viewingdirections from the point of view as the function of progress throughthe progress length. The margin information may define a marginconstraint that limits deviations from the trajectory of viewingdirections.

Stabilized viewing information may be determined by the processor basedon the viewing information, the margin information, and/or otherinformation. The stabilized viewing information may define a stabilizedtrajectory of viewing directions for the spherical video content. Thestabilized trajectory of viewing directions may include stabilizedviewing directions from the point of view as the function of progressthrough the progress length. Differences between the trajectory ofviewing directions and the stabilized trajectory of viewing directionsmay be limited by the margin constraint and/or other information. Thespherical video content may be presented on the display 14 based on thestabilized viewing information and/or other information.

The display 14 may include one or more devices that may presentinformation visually. The display 14 may be configured to present videocontent (e.g., spherical video content) and/or other information. Thedisplay 14 may include one or more screens for presenting video content.For example, the display 14 may include a single screen in which thevideo content may be presented. As another example, the display 14 mayinclude multiple screens in which the video content may be presented,with individual screens presenting portions of the video content. Insome implementations, the display 14 may include a head-mounted displayand the video content may be presented on the head-mounted display asvirtual reality content. In some implementations, the display 14 mayinclude a display of a mobile device (e.g., camera, smartphone, tablet,laptop).

The electronic storage 13 may be configured to include electronicstorage medium that electronically stores information. The electronicstorage 13 may store software algorithms, information determined by theprocessor 11, information received remotely, and/or other informationthat enables the system 10 to function properly. For example, theelectronic storage 13 may store information relating to videoinformation, video content (e.g., spherical video content), informationrelating to video content, viewing information, information relating toviewing directions, margin information, information relating to marginconstraint, stabilized viewing information, information relating tostabilized viewing directions, and/or other information.

Video content may refer to media content that may be consumed as one ormore videos/video clips. Video content may include one or morevideos/video clips stored in one or more formats/containers, and/orother video content. A format may refer to one or more ways in which theinformation defining video content may be arranged/laid out (e.g., fileformat). A container may refer to one or more ways in which informationdefining video content may be arranged/laid out in association withother information (e.g., wrapper format). Video content may include avideo clip captured by an image capture device, multiple video clipscaptured by an image capture device, and/or multiple video clipscaptured by different image capture devices. Video content may includemultiple video clips captured at the same time and/or multiple videoclips captured at different times. Video content may include a videoclip processed by an image/video application, multiple video clipsprocessed by an image/video application, and/or multiple video clipsprocessed by different image/video applications.

Video content may have a progress length. A progress length may bedefined in terms of time durations and/or frame numbers. For example,video content may include a video having a time duration of 60 seconds.Video content may include a video having 1800 video frames. Videocontent having 1800 video frames may have a play time duration of 60seconds when viewed at 30 frames/second. Other progress lengths, timedurations, and frame numbers are contemplated.

Video content may define visual content viewable as a function ofprogress through the progress length of the video content. Visualcontent of the video content may be included within video frames of thevideo content. That is, video content may include video frames thatdefine visual content of the video content. In some implementations,video content may include one or more spherical video content, virtualreality content, and/or other video content. Spherical video contentand/or virtual reality content may define visual content viewable from apoint of view as a function of progress through the progress length ofthe spherical video/virtual reality content. Spherical video content mayinclude spherical video frames that define visual content viewable froma point of view as a function of progress through the progress length ofthe spherical video content.

Spherical video content may refer to a video capture of multiple viewsfrom a location. Spherical video content may include a full sphericalvideo capture (360-degrees of capture, including opposite poles) or apartial spherical video capture (less than 360-degrees of capture).Spherical video content may be captured through the use of one or moreimage capture devices (e.g., cameras, image sensors) to captureimages/videos from a location. Spherical video content may be generatedbased on light received within a field of view of a single image sensoror within fields of view of multiple image sensors during a captureperiod. For example, multiple images/videos captured by multiplecameras/image sensors may be combined/stitched together to form thespherical video content. The field of view of camera(s)/image sensor(s)may be moved/rotated (e.g., via movement/rotation of optical element(s),such as lens, of the image sensor(s)) to capture multiple images/videosfrom a location, which may be combined/stitched together to form thespherical video content.

Visual content of the spherical video content may be included withinspherical video frames of the spherical video content. A spherical videoframe may include a spherical image of the spherical video content at amoment within the progress length of the spherical video content. Forexample, multiple images captured by multiple cameras/images sensors ata moment in time may be combined/stitched together to form a sphericalvideo frame for the moment in time. A spherical video frame may includea full spherical image capture (360-degrees of capture, includingopposite poles) or a particular spherical image capture (less than360-degrees of capture). A spherical image (e.g., spherical video frame)may be comprised of multiple sub-images (sub-frames). Sub-images may begenerated by a single image sensor (e.g., at different times as thefield of view of the image sensor may be rotated) or by multiple imagesensors (e.g., individual sub-images for a moment in time captured byindividual image sensors and combined/stitched together to form thespherical image).

In some implementations, spherical video content may be stored with a5.2K resolution. Using a 5.2K spherical video content may enable viewingwindows (e.g., directed to a portion of a spherical video frame) for thespherical video content with resolution close to 1080p. In someimplementations, spherical video content may include 12-bit videoframes. In some implementations, spherical video content may be consumedas virtual reality content.

Virtual reality content may refer to content (e.g., spherical videocontent) that may be consumed via virtual reality experience. Virtualreality content may associate different directions within the virtualreality content with different viewing directions, and a user may view aparticular direction within the virtual reality content by looking in aparticular direction. For example, a user may use a virtual realityheadset to change the user's direction of view. The user's direction ofview may correspond to a particular direction of view within the virtualreality content. For example, a forward-looking direction of view for auser may correspond to a forward direction of view within the virtualreality content.

Spherical video content and/or virtual reality content may have beencaptured at one or more locations. For example, spherical video contentand/or virtual reality content may have been captured from a stationaryposition (e.g., a seat in a stadium). Spherical video content and/orvirtual reality content may have been captured from a moving position(e.g., a moving bike). Spherical video content and/or virtual realitycontent may include video capture from a path taken by the capturingdevice(s) in the moving position. For example, spherical video contentand/or virtual reality content may include video capture from a personwalking around in a music festival.

FIG. 3 illustrates an example video content 300 defined by videoinformation.

The video content 300 may include spherical video content. The videocontent 300 may define visual content viewable from a point of view(e.g., center of sphere) as a function of progress through the progresslength of the video content 300. FIG. 3 illustrates example rotationalaxes for the video content 300. Rotational axes for the video content300 may include a yaw axis 310, a pitch axis 320, a roll axis 330,and/or other axes. Rotations about one or more of the yaw axis 310, thepitch axis 320, the roll axis 330, and/or other axes may define viewingdirections/viewing window for the video content 300.

For example, a 0-degree rotation of the video content 300 around the yawaxis 310 may correspond to a front viewing direction. A 90-degreerotation of the video content 300 around the yaw axis 310 may correspondto a right viewing direction. A 180-degree rotation of the video content300 around the yaw axis 310 may correspond to a back-viewing direction.A 90-degree rotation of the video content 300 around the yaw axis 310may correspond to a left viewing direction.

A 0-degree rotation of the video content 300 around the pitch axis 320may correspond to a viewing direction that may be level with respect tohorizon. A 45-degree rotation of the video content 300 around the pitchaxis 320 may correspond to a viewing direction that may be pitched upwith respect to horizon by 45-degrees. A 90-degree rotation of the videocontent 300 around the pitch axis 320 may correspond to a viewingdirection that may be pitched up with respect to horizon by 90-degrees(looking up). A −45-degree rotation of the video content 300 around thepitch axis 320 may correspond to a viewing direction that may be pitcheddown with respect to horizon by 45-degrees. A −90-degree rotation of thevideo content 300 around the pitch axis 320 may correspond to a viewingdirection that may be pitched down with respect to horizon by 90-degrees(looking down).

A 0-degree rotation of the video content 300 around the roll axis 330may correspond to a viewing direction that may be upright. A 90-degreerotation of the video content 300 around the roll axis 330 maycorrespond to a viewing direction that may be rotated to the right by90-degrees. A −90-degree rotation of the video content 300 around theroll axis 330 may correspond to a viewing direction that may be rotatedto the left by 90-degrees. Other rotations and viewing directions arecontemplated.

A playback of video content (e.g., the video content 300) may includepresentation of one or more portions of the video content on one or moredisplays (e.g., the display 14) based on a viewing window and/or otherinformation. The viewing window may define extents of the visual contentviewable on one or more displays as the function of progress through theprogress length of the video content. The viewing window may defineextents of the visual content presented on the display(s) as thefunction of progress through the progress length of the video content.For spherical video content, the viewing window may define extents ofthe visual content viewable from the point of view as the function ofprogress through the progress length of the spherical video content.

The viewing window may be characterized by viewing directions, viewingsizes (e.g., viewing zoom, viewing magnification), viewing rotations,and/or other information. A viewing direction may define a direction ofview for video content. A viewing direction may define the angle/visualportion of the video content at which the viewing window may bedirected. A viewing direction may define a direction of view for thevideo content selected by a user, defined by instructions for viewingthe video content, and/or determined based on other information aboutviewing the video content as a function of progress through the progresslength of the video content (e.g., director track specifying viewingdirection to be presented during playback as a function of progressthrough the progress length of the video content). For spherical videocontent, a viewing direction may define a direction of view from thepoint of view from which the visual content may be defined. Viewingdirections for the video content may be characterized by rotationsaround the yaw axis 310, the pitch axis 320, the roll axis 330, and/orother axes. For example, a viewing direction of a 0-degree rotation ofthe video content around a yaw axis (e.g., the yaw axis 310) and a0-degree rotation of the video content around a pitch axis (e.g., thepitch axis 320) may correspond to a front viewing direction (the viewingwindow may be directed to a forward portion of the visual contentcaptured within the spherical video content).

For example, FIG. 4 illustrates example changes in viewing directions400 (e.g., selected by a user for video content, specified by a directortrack) as a function of progress through the progress length of thevideo content. The viewing directions 400 may change as a function ofprogress through the progress length of the video content. For example,at 0% progress mark, the viewing directions 400 may correspond to azero-degree yaw angle and a zero-degree pitch angle. At 25% progressmark, the viewing directions 400 may correspond to a positive yaw angleand a negative pitch angle. At 50% progress mark, the viewing directions400 may correspond to a zero-degree yaw angle and a zero-degree pitchangle. At 75% progress mark, the viewing directions 400 may correspondto a negative yaw angle and a positive pitch angle. At 87.5% progressmark, the viewing directions 400 may correspond to a zero-degree yawangle and a zero-degree pitch angle. Other viewing directions arecontemplated.

A viewing size may define a size (e.g., size, magnification, viewingangle) of viewable extents of visual content within the video content. Aviewing size may define the dimensions of the viewing window. A viewingsize may define a size of viewable extents of visual content within thevideo content selected by a user, defined by instructions for viewingthe video content, and/or determined based on other information aboutviewing the video content as a function of progress through the progresslength of the video content (e.g., director track specifying viewingsize to be presented as a function of progress through the progresslength of the video content). In some implementations, a viewing sizemay define different shapes of viewable extents. For example, a viewingwindow may be shaped as a rectangle, a triangle, a circle, and/or othershapes.

A viewing rotation may define a rotation of the viewing window. Aviewing rotation may define one or more rotations of the viewing windowabout one or more axis. In some implementations, a viewing rotation maybe defined by one or more parameters of a viewing direction. Forexample, a viewing rotation may be defined based on rotation about anaxis (e.g., the roll axis 330) corresponding to a viewing direction. Aviewing rotation may define a rotation of the viewing window selected bya user, defined by instructions for viewing the video content, and/ordetermined based on other information about viewing the video content asa function of progress through the progress length of the video content(e.g., director track specifying viewing rotation to be used as afunction of progress through the progress length of the video content).For example, a viewing rotation of a viewing window having a rectangularshape may determine whether the rectangular viewing window is to bepositioned in a portrait orientation (e.g., for a portrait view of thevideo content), in a landscape orientation (e.g., for a landscape viewof the video content), and/or other orientation with respect to thevisual content of the video content.

FIGS. 5A-5B illustrate examples of extents for video content 500. InFIG. 5A, the size of the viewable extent of the video content 500 maycorrespond to the size of extent A 510. In FIG. 5B, the size of viewableextent of the video content 500 may correspond to the size of extent B520. Viewable extent of the video content 500 in FIG. 5A may be smallerthan viewable extent of the video content 500 in FIG. 5B. The viewableextent of the video content 500 in FIG. 5B may be more tilted withrespect to the video content 500 than viewable extent of the videocontent 500 in FIG. 5A. Other viewing sizes and viewing rotations arecontemplated.

Referring to FIG. 1, the processor 11 may be configured to provideinformation processing capabilities in the system 10. As such, theprocessor 11 may comprise one or more of a digital processor, an analogprocessor, a digital circuit designed to process information, a centralprocessing unit, a graphics processing unit, a microcontroller, ananalog circuit designed to process information, a state machine, and/orother mechanisms for electronically processing information. Theprocessor 11 may be configured to execute one or more machine-readableinstructions 100 to facilitate stabilizing views of videos. Themachine-readable instructions 100 may include one or more computerprogram components. The machine-readable instructions 100 may includeone or more of a video information component 102, a viewing informationcomponent 104, a margin information component 106, a stabilizationcomponent 108, a presentation component 110, and/or other computerprogram components.

The video information component 102 may be configured to obtain videoinformation defining one or more video content (e.g., spherical videocontent) and/or other information. Obtaining video information mayinclude one or more of accessing, acquiring, analyzing, determining,examining, identifying, loading, locating, opening, receiving,retrieving, reviewing, storing, and/or otherwise obtaining the videoinformation. The video information component 102 may obtain videoinformation from one or more locations. For example, the videoinformation component 102 may obtain video information from a storagelocation, such as the electronic storage 13, electronic storage ofinformation and/or signals generated by one or more image sensors,electronic storage of a device accessible via a network, and/or otherlocations. The video information component 102 may obtain videoinformation from one or more hardware components (e.g., an image sensor)and/or one or more software components (e.g., software running on acomputing device).

The video information component 102 may be configured to obtain videoinformation defining one or more video content during acquisition of thevideo content and/or after acquisition of the video content by one ormore image sensors/image capture devices. For example, the videoinformation component 102 may obtain video information defining a videowhile the video is being captured by one or more image sensors/imagecapture devices. The video information component 102 may obtain videoinformation defining a video after the video has been captured andstored in memory (e.g., the electronic storage 13).

In some implementations, the video information component 102 may obtainvideo information based on user interaction with a userinterface/application (e.g., video editing application), and/or otherinformation. For example, a user interface/application may provideoption(s) for a user to select one or more video content in which viewsare to be stabilized. The video information defining the video contentmay be obtained based on the user's selection of the video contentthrough the user interface/video application. Other selections of videocontent are contemplated.

In some implementations, one or more corrections may be applied to thevideo content. A correction may refer to a process that changes one ormore visual and/or audio characteristics of the video content. Acorrection may be applied to the entire progress length of the videocontent, a portion of the progress length of the video content, theentire visual extent of the video content, or a portion of the visualextent of the video content. For example, a rotation/horizontalcorrection may be applied to video content to stabilize the videocontent. For instance, the video content may have been captured whilethe image capture device(s) capturing the video content was rotated withrespect to the horizon. Such capture of the video content may result ina view of the video content showing rotated (e.g., tilted) view of thecaptured content. The video content may be corrected for such rotationduring capture such that the video content is stabilized about thehorizon.

As another example, a rolling shutter correction may be applied to videocontent. For instance, the video content may have been captured usingrolling shutter where pixels of the video frames of the video contentare captured on a row-by-row basis. Such capture of video content mayresult in one or more rolling shutter effects in the video content, suchas wobble, skew, spatial aliasing, temporal aliasing, and/or otherrolling shutter effects. The video content may be corrected for rollingshutter capture such that one or more rolling shutter effects areremoved from the video content. Application of other corrections to thevideo content are contemplated.

The viewing information component 104 may be configured to obtainviewing information for the video content (e.g., spherical videocontent) and/or other information. Obtaining viewing information mayinclude one or more of accessing, acquiring, analyzing, determining,examining, identifying, loading, locating, opening, receiving,retrieving, reviewing, storing, and/or otherwise obtaining the viewinginformation. The viewing information component 104 may obtain viewinginformation from one or more locations. For example, the viewinginformation component 104 may obtain viewing information from a storagelocation, such as the electronic storage 13, electronic storage ofinformation and/or signals generated by one or more sensors, electronicstorage of a device accessible via a network, and/or other locations.The viewing information component 104 may obtain viewing informationfrom one or more hardware components and/or one or more softwarecomponents (e.g., software running on a computing device).

The viewing information may define one or more trajectories of viewingdirections for the video content (e.g., spherical video content). Atrajectory of viewing directions may refer to a line, a path, and/or aprogression that defines values of viewing directions for the videocontent as a function of progress through the progress length of thevideo content. That is, the trajectory of viewing directions may beformed by and/or define values of viewing directions to be used when thevideo content is viewed, such as values of viewing directions defined ina director track that includes information as to how the video contentis to be presented on a display (e.g., the display 14). For instance, atrajectory of viewing direction may include viewing directions from apoint of view of spherical video content as the function of progressthrough the progress length of the spherical video content.

The viewing directions from a point of view for video content may bedefined based on rotations about the point of view. The rotations aboutthe point of view may include rotations about one or more axes runningthrough the point of view. The axe(s) may include a yaw axis, a pitchaxis, a roll axis, and/or other axes. For example, the axe(s) mayinclude one or more of the yaw axis 310, the pitch axis 320, and/or theroll axis 330 shown in FIG. 3. An example viewing directions 400 definedbased on rotations about multiple axes is shown in FIG. 4. Othertrajectories of viewing directions are contemplated. In someimplementations, the viewing information may define other values for oneor more parameters of a viewing window for the video content, such asviewing size and/or viewing rotation. That is, viewing information maydefine one or more trajectories of viewing sizes and/or viewingrotations for the video content. Thus, viewing information may defineone or more parameters by which a viewing window for the video contentmay be determined. The viewing information may define one or more of thedirection at which the video content is viewed (viewing direction), theextent of the visual content of the video content that is within theviewing window (viewing size), and/or the rotation of the viewing window(viewing rotation).

In some implementations, a trajectory of viewing directions, viewingsizes, and/or viewing rotations may be defined based on a user'sinteraction with a display during presentation of the video content(e.g., spherical video content) on the display and/or other information.That is, a user may define parameters (e.g., viewing direction, viewingsize, viewing rotation) of a viewing window for video content byinteracting with the display during presentation of the video content. Auser's interaction with the display may include the user's engagementwith the display (e.g., user's engagement with a touchscreen display)and/or a user's engagement with a device including and/or coupled to thedisplay (e.g., user's engagement with a mobile device including thedisplay).

For example, FIG. 6 illustrates an example mobile device 605. Atrajectory of viewing directions, viewing sizes, and/or viewingrotations for video content may be defined based on a user's interactionwith the mobile device 605 during presentation of the video content onthe display of the mobile device 605. For example, the mobile device 605may include one or more motion/rotation sensors (e.g., accelerometer,gyroscope, inertial measurement unit, magnetometer) and the user'sinteraction with the display may include the user moving the mobiledevice 605 rotationally and/or transversally. For example, the user maymove the mobile device 605 laterally to change the viewing direction forthe video content in a lateral direction. The user may rotate the mobiledevice 605 about the yaw axis 610 and/or the pitch axis 620 to changethe viewing direction for the video content in the direction of rotation(e.g., rotating to the right, rotating to the left, pitch-up,pitch-down). The user may rotate the mobile device 605 (e.g., tilt tothe right, tilt to the left) to change the viewing rotation for thevideo content. The user may move the mobile device forward or back tochange the viewing size for the video content (e.g., zoom in or zoomout).

As another example, the mobile device 605 may include a touchscreendisplay, and the user may define a trajectory of viewing directions,viewing sizes, and/or viewing rotations for video content by interactingwith the touchscreen display during presentation of the video content onthe touchscreen display. The user's interaction with the touchscreendisplay may include the user's engagement with the touchscreen displayto make one or more gestures on the touchscreen display. For instance,the user may make one or more panning gestures, one or more rotatinggestures, one or more stretching gestures, one or more pinchinggestures, and/or other gestures on the touchscreen display. Thegesture(s) on the touchscreen display may define values for viewingdirections, viewing sizes, and/or viewing rotations. For example, apanning gesture may change the viewing direction for the video contentin a lateral direction (e.g., to the left, to the right, around yawaxis). The rotating gesture may change the viewing rotation for thevideo content in a clockwise or anti-clockwise direction. The stretchinggesture may change the viewing size for the video content by zooming inon the portion of the video content in the middle of the stretchinggesture. The pinching gesture may change the viewing size for the videocontent by zooming out of the video content (e.g., zooming out from theportion of the video content in the middle of the pinching gesture).

A trajectory of viewing directions, viewing sizes, and/or viewingrotations defined based on a user's interaction with a display duringpresentation of the video content may be used to create a custom viewfor the video content. That is, the values of the viewing directions,viewing sizes, and/or viewing rotations defined based on the user'sinteraction may be stored and used to present a particular view of thevideo content on playback. For example, a user's interaction with adisplay may define a trajectory of viewing directions 400 shown in FIG.4. The values of the rotations about the yaw axis and the pitch axis inthe viewing directions may be stored in a director track. The directortrack may be used to determine in what direction a viewing window forthe video content should be directed when the video content is played.The director track may define other values for determining a viewingwindow for the video content, such as viewing sizes and/or viewingrotations. Different user interactions may be used to generate differentdirector tracks. Different director tracks may be used to providedifferent views of the video content. For instance, different directortracks defining different viewing directions may provide views withdifferent styles (e.g., dynamic style view, calm style view).

Using a user's interaction with a display to define viewing directions,viewing sizes, and/or viewing rotations for video content may result inunsmooth views of the video content. For example, a user'smovement/rotation of the mobile device 605 may result in high frequencynoise in the viewing directions, such as based on the user's hand(s)holding the mobile device 605 shaking. As another example, a user'smovement/rotation of the mobile device 605 may result in abrupt changesin the viewing directions that result in a jerky/shaky view of the videocontent. That is, due to unsmooth motion of the user in moving/rotatingthe mobile device 605, the changes in viewing directions for the videocontent may include stagger, jitter, and/or other jerk in change. Otheruser interactions are contemplated.

For example, FIG. 7 illustrates an example trajectory of viewingdirections 700 for video content. The trajectory of viewing directions700 may be defined based on a user's interaction with a display duringpresentation of the video content on the display. The trajectory ofviewing directions 700 may define values of yaw angle positions (e.g.,rotational positions defined with respect to a yaw axis, rotation to theleft or right) at which a viewing window for the video content wasdirected during playback of the video content. For example, thetrajectory of viewing directions 700 may be defined based on the displaybeing rotated in a negative yaw direction, rotated in a positive yawdirection, rotated near a zero-yaw direction, and then rotated in thenegative yaw direction. Other types of trajectory of viewing directionsare contemplated.

Presenting a view of the video content based on the trajectory ofviewing directions 700 may be undesirable. For example, presenting aview of the video content based on the trajectory of viewing directions700 may result in a view that is shaky and/or that appears to includeunintended camera motion. For instance, sharp/quick changes in the yawangle positions in the trajectory of viewing directions 700 may resultin abrupt changes in the direction of visuals within the video (e.g.,quick left or right virtual camera motion). Multiple changes in the yawangle positions in the trajectory of viewing directions 700 may resultin a view that is repeatedly changing the direction of view (e.g., tothe right, to the left, to the front, to the right) and/or not providinga stabilized view of the video content.

The margin information component 106 may be configured to obtain margininformation and/or other information. Obtaining margin information mayinclude one or more of accessing, acquiring, analyzing, determining,examining, identifying, loading, locating, opening, receiving,retrieving, reviewing, storing, and/or otherwise obtaining the margininformation. The margin information component 106 may obtain margininformation from one or more locations. For example, the margininformation component 106 may obtain margin information from a storagelocation, such as the electronic storage 13, electronic storage ofinformation and/or signals generated by one or more sensors, electronicstorage of a device accessible via a network, and/or other locations.The margin information component 106 may obtain margin information fromone or more hardware components and/or one or more software components(e.g., software running on a computing device).

The margin information may define one or more margin constraints. Amargin constraint may refer to one or more constraints by which atrajectory of viewing directions, viewing sizes, and/or viewingrotations may be changed. A margin constraint may provide one or moreranges of margin with which a trajectory of viewing directions, viewingsizes, and/or viewing rotations may be changed. For example, a marginconstraint may limit deviations from a trajectory of viewing directions,such as the trajectory of viewing directions 700 shown in FIG. 7. Themargin constraint may limit how much the trajectory of viewingdirections may be stabilized to provide a more stable view of the videocontent. That is, the margin constraint may limit deviations of astabilized trajectory of viewing directions from the trajectory ofviewing directions. A stabilized trajectory of viewing directions mayinclude smoother/more stable changes in viewing directions than thetrajectory of viewing directions from which it may be generated. Astabilized trajectory of viewing sizes and/or viewing rotations mayinclude smoother/more stable changes in viewing sizes and/or viewingrotation than the trajectory from which it may be generated.

The margin constraint may provide one or more margins to limit how muchthe values of the stabilized trajectory may differ from the values ofthe original trajectory. Such margin(s) may preserve the intention ofthe user in changing the parameters (e.g., viewing directions, viewingsizes, viewing rotations) for viewing video content while removingjitters, stagger, and/or other jerky motions (e.g., removinghigh-frequency vibrations).

A margin constraint may provide the same or different deviation limitson the values of the trajectory of viewing directions, viewing sizes,and/or viewing rotations. For example, FIG. 8 illustrates an examplemargin constraint 800 including different deviation limits for differentparameters of a viewing window for video content. The margin constraint800 may include a yaw axis constraint 802, a pitch axis constraint 804,a roll axis constraint 806, and a viewing size constraint 808. The yawaxis constraint 802 and the pitch axis constraint 804 may limit theamount of deviations with respect to the change in viewing directionsfor the stabilized trajectory of viewing directions. The roll axisconstraint 806 may limit the amount of deviations with respect to thechange in viewing rotations for the stabilized trajectory of viewingrotations (or a portion of the stabilized trajectory of viewingdirections). The viewing size constraint 808 may limit the amount ofdeviations with respect to the change in viewing sizes for thestabilized trajectory of viewing sizes.

The margin constraint 800 may provide for different deviation limitswith the yaw axis constraint 802, the pitch axis constraint 804, theroll axis constraint 806, and the viewing size constraint 808. Forexample, determination of the stabilized trajectory of viewingdirections based on the margin constraint 800 may allow for greaterdeviation in the roll of a viewing direction then the yaw of the viewingdirection. Determination of the stabilized trajectory based on themargin constraint 800 may allow for greater changes of the viewingrotation than the viewing size of the viewing window. Use of such amargin constraint may allow for different stabilization of the viewingdirections, viewing sizes, and/or viewing rotations. Higher margins mayenable greater stabilization of a view for video content while lowermargins may more closely preserve the user interaction that defined theoriginal view for the video content. In some implementations, differentmargin constraints may be used to provide different styles of view. Forexample, a margin constraint with low margins may be used to provide avery stabilized view of video content while a margin constraint withhigh margins may be used to provide a slightly stabilized view of videocontent. As another example, a margin constraint with different limitson different parameters may be provided to create different styles ofview of video content, such as one view that greatly stabilizes viewingrolls while allow for large fluctuations in viewing sizes. In someimplementations, different margin constraint may be used for differentstyles of view (e.g., active view, scenery view). In someimplementations, different margin constraint may be used for differentcontent captured within the video content (e.g., sporting event, musicfestival, third-person view capture, first-person view capture).

In some implementations, the margin constraint may include a targetconstraint and/or other constraints. A target constraint may providelimit the amount of deviations with respect to the change in viewingdirections, viewing sizes, and/or viewing rotations based on thepresence of target within the video content. For example, the targetconstraint may be determined based on positions of a target in sphericalvideo frames and/or other information such that a stabilized viewingwindow includes the target or a portion of the target. For example, thetarget constraint may define how far stabilized viewing directions maybe changed from the original viewing directions such that the stabilizedviewing windows stays directed at the target. The target constraint maydefine how much stabilized viewing sizes may be changed from theoriginal viewing sizes such that the stabilized viewing window includesall of or certain portion(s) of the target and/or certain amount of areasurrounding the target. The target constraint may define how muchstabilized viewing rotations may be changed from the original viewingrotations such that the stabilized viewing window stays level with thetarget or the environment of the target. Other constraints arecontemplated.

The stabilization component 108 may be configured to determinestabilized viewing information based on the viewing information, themargin information, and/or other information. The stabilized viewinginformation may define one or more stabilized trajectories of viewingdirections, viewing sizes, and/or viewing rotations for the videocontent (e.g., spherical video content). The stabilization component 108may determine the stabilized viewing information based on the viewinginformation to stabilize (e.g., smooth) the trajectory characterized bythe viewing information. That is, the stabilized trajectory defined bythe stabilized viewing information may be a stabilized version of thetrajectory defined by the viewing information. For example, a stabilizedtrajectory of viewing directions may include stabilized viewingdirections from the point of view as the function of progress throughthe progress length of video content (e.g., spherical video content).Differences between a trajectory of viewing directions and a stabilizedtrajectory of viewing directions may be limited by the marginconstraint(s). Changes in the stabilized viewing directions may besmoother than changes in the viewing directions. For example, jitters inthe trajectory of viewing directions, viewing sizes, and/or viewingrotations may be removed in the stabilized trajectory. As anotherexample, an abrupt jump in the trajectory of viewing directions, viewingsizes, and/or viewing rotations may be replaced in the stabilizedtrajectory with a linear/curved ramp to provide for a smoother changesin the viewing directions, viewing sizes, and/or viewing rotations.

In some implementations, the stabilization component 108 may determinedifferent stabilized viewing information based on different margininformation (different margin constraints). For example, thestabilization component 108 may determine different stabilizedtrajectory of viewing directions based on different margin constraintsto create different views/styles of views of the video content.

FIG. 9 illustrates example trajectory of viewing direction 900 andstabilized trajectory of viewing directions 932. The trajectory ofviewing directions 700 may define values of yaw angle positions (e.g.,rotational positions defined with respect to a yaw axis, rotation to theleft or right) at which a viewing window for the video content wasdirected during playback of the video content. The stabilized trajectoryof viewing directions 932 may be determined such that changes in thestabilized viewing directions of the stabilized trajectory of viewingdirections 932 are smoother than changes in the viewing directions ofthe trajectory of viewing directions 900.

In some implementations, determination of the stabilized viewinginformation based on the viewing information may include determining atleast a portion of the stabilized trajectory of viewing directions,viewing sizes, and/or viewing rotations based on a subsequent portion ofthe trajectory of viewing directions, viewing sizes, and/or viewingrotations (look ahead), and/or other information. For example,stabilizing a portion of a trajectory of viewing directions based on asubsequent portion of the trajectory of viewing directions may includingstabilizing a portion of the viewing directions corresponding to a givenmoment within the progress length based on one or more portions of theviewing directions corresponding to one or more subsequent moments(moment(s) past the given moment) within the progress length.

A subsequent moment within the progress length may be adjacent to thegiven moment or not adjacent to the given moment. Using the subsequentportion(s) of the trajectory (look ahead) to stabilized the trajectorymay enable the stabilization component 108 to determine stabilizedviewing information that preserves a user's intended changes in theviewing window. The user's intended changes in the viewing window mayrefer to changes in the extents defined by the viewing window that theuser planned/meant to carry out, such as intentional changes in theviewing directions, viewing sizes, and/or viewing rotations.

For example, the trajectory of viewing directions 900 may includeportions corresponding to different moments within the progress length,such as a duration A 922, a duration B 924, a duration C 926, a durationD 928, and a duration E 930. One or more portions of the trajectory ofviewing directions 900 may be stabilized (e.g., as shown in thestabilized trajectory of viewing direction 932) based on subsequentportion(s) of the trajectory of viewing directions 900. For instance,one or more portions of the trajectory of viewing directions 900 in the“future” may be used to determine whether a particular change in theviewing directions defined by the trajectory of viewing directions 900was an intended change or an unintended change. For example, changes inthe trajectory of viewing directions 900 may include a negative changein yaw angle below zero-yaw degree during the duration A 922, followedby a positive change in yaw angle past zero-yaw degree during theduration B 924, followed by a negative change in yaw angle to zero-yawdegree during the duration C 926. Such fluctuation of the trajectory ofviewing directions 900 around the zero-yaw degree may indicate that theinitial negative change in the viewing directions was not intended, thatthe positive change in the viewing directions was meant to correct forthe preceding unintended motion, that the user overshot the correctionto go past the zero-yaw degree before arriving at the zero-yaw degree.

The stabilized trajectory of viewing directions 932 during the durationA 922 may be determined based on the portion of the trajectory ofviewing directions 900 corresponding to the duration B 924 and/or theduration C 926, and the stabilized trajectory of viewing directions 932during the duration B 924 may be determined based on the portion of thetrajectory of viewing directions 900 corresponding to the duration C 926such that the unintended motion during duration A 922 and the duration B924 are removed in the stabilized trajectory of viewing directions 932.Similarly, based on a subsequent portion of the trajectory of viewingdirections 900 corresponding to the duration E 930, the portion of thestabilized trajectory of viewing direction 932 for the duration D 928may be determined to include smooth changes from the zero-yaw degree tonegative yaw degree. Other stabilization of trajectory of viewingdirections, viewing sizes, and/or viewing rotations based on asubsequent portion of the trajectory of viewing directions, viewingsizes, and/or viewing rotations are contemplated.

The presentation component 110 may be configured to present the videocontent (e.g., spherical video content) on one or more displays (e.g.,the display 14) based on the stabilized viewing information and/or otherinformation. For example, based on stabilized trajectory of viewingdirections (such as shown in FIG. 9), particular extents of the videocontent may be presented on a display (e.g., the display 14). Suchpresentation of the video content may provide for a stabilized view ofthe video content.

The presentation of the video content based on the stabilized viewinginformation may be provided as a “default” or “automatic” view for thevideo content. That is, rather than presenting the video content basedon the viewing information, the video content may be presented based onthe stabilized viewing information. Such presentation of the videocontent may make the users think and/or believe that they created thestabilized view of the video content, rather than that they created the(unsmoothed) view of the video content which was stabilized by thestabilization component 110. In some implementations, multiple views ofthe video content may be presented based on different stabilized viewinginformation. For example, different stabilized viewing information maydefine different stabilization of trajectory of viewing directions,viewing sizes, and/or viewing rotations to create different styles ofview. The different styles of view of the video content may be presentedfor selection by a user.

In some implementations, the presentation component 110 may beconfigured to generate one or more video edits of the video content. Avideo edit may refer to a particular arrangement and/or manipulation ofone or more portions (e.g., video clips) of the video content. A videoedit, such as a video summary, may include portion(s) of the videocontent to provide an overview of the video content. A video edit mayinclude extents of the video content defined by stabilized trajectory ofviewing directions, viewing sizes, and/or viewing rotations. That is,the presentation component 110 may generate a video edit of the videocontent based on the stabilized viewing information.

Stabilized viewing information and/or other information definingstabilized trajectory may be stored in one or more storage media. Forexample, the stabilized viewing information may be stored in theelectronic storage 13, remote storage locations (storage media locatedat/accessible through a server), and/or other locations. In someimplementations, the stabilized viewing information may be storedthrough one or more intermediary devices. For example, the processor 11may be located within a computing device without a connection to thestorage device (e.g., the computing device lacks WiFi/cellularconnection to the storage device). The stabilized viewing informationmay be stored through another device that has the necessary connection(e.g., the computing device using a WiFi/cellular connection of a pairedmobile device, such as a smartphone, tablet, laptop, to storeinformation in one or more storage media). Other storage locations forand storage of the stabilized viewing information are contemplated.

While the description herein may be directed to video content, one ormore other implementations of the system/method described herein may beconfigured for other types media content. Other types of media contentmay include one or more of audio content (e.g., music, podcasts,audiobooks, and/or other audio content), multimedia presentations,images, slideshows, visual content (one or more images and/or videos),and/or other media content.

Implementations of the disclosure may be made in hardware, firmware,software, or any suitable combination thereof. Aspects of the disclosuremay be implemented as instructions stored on a machine-readable medium,which may be read and executed by one or more processors. Amachine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputing device). For example, a tangible computer-readable storagemedium may include read-only memory, random access memory, magnetic diskstorage media, optical storage media, flash memory devices, and others,and a machine-readable transmission media may include forms ofpropagated signals, such as carrier waves, infrared signals, digitalsignals, and others. Firmware, software, routines, or instructions maybe described herein in terms of specific exemplary aspects andimplementations of the disclosure, and performing certain actions.

In some implementations, some or all of the functionalities attributedherein to the system 10 may be provided by external resources notincluded in the system 10. External resources may include hosts/sourcesof information, computing, and/or processing and/or other providers ofinformation, computing, and/or processing outside of the system 10.

Although the processor 11, the electronic storage 13, and the display 14are shown to be connected to the interface 12 in FIG. 1, anycommunication medium may be used to facilitate interaction between anycomponents of the system 10. One or more components of the system 10 maycommunicate with each other through hard-wired communication, wirelesscommunication, or both. For example, one or more components of thesystem 10 may communicate with each other through a network. Forexample, the processor 11 may wirelessly communicate with the electronicstorage 13. By way of non-limiting example, wireless communication mayinclude one or more of radio communication, Bluetooth communication,Wi-Fi communication, cellular communication, infrared communication, orother wireless communication. Other types of communications arecontemplated by the present disclosure.

Although the processor 11 is shown in FIG. 1 as a single entity, this isfor illustrative purposes only. In some implementations, the processor11 may comprise a plurality of processing units. These processing unitsmay be physically located within the same device, or the processor 11may represent processing functionality of a plurality of devicesoperating in coordination. The processor 11 may be configured to executeone or more components by software; hardware; firmware; some combinationof software, hardware, and/or firmware; and/or other mechanisms forconfiguring processing capabilities on the processor 11.

It should be appreciated that although computer components areillustrated in FIG. 1 as being co-located within a single processingunit, in implementations in which the processor 11 comprises multipleprocessing units, one or more of computer program components may belocated remotely from the other computer program components.

While computer program components are described herein as beingimplemented via the processor 11 through machine-readable instructions100, this is merely for ease of reference and is not meant to belimiting. In some implementations, one or more functions of computerprogram components described herein may be implemented via hardware(e.g., dedicated chip, field-programmable gate array) rather thansoftware. One or more functions of computer program components describedherein may be software-implemented, hardware-implemented, or softwareand hardware-implemented.

The description of the functionality provided by the different computerprogram components described herein is for illustrative purposes, and isnot intended to be limiting, as any of computer program components mayprovide more or less functionality than is described. For example, oneor more of computer program components may be eliminated, and some orall of its functionality may be provided by other computer programcomponents. As another example, the processor 11 may be configured toexecute one or more additional computer program components that mayperform some or all of the functionality attributed to one or more ofcomputer program components described herein.

The electronic storage media of the electronic storage 13 may beprovided integrally (i.e., substantially non-removable) with one or morecomponents of the system 10 and/or removable storage that is connectableto one or more components of the system 10 via, for example, a port(e.g., a USB port, a Firewire port, etc.) or a drive (e.g., a diskdrive, etc.). The electronic storage 13 may include one or more ofoptically readable storage media (e.g., optical disks, etc.),magnetically readable storage media (e.g., magnetic tape, magnetic harddrive, floppy drive, etc.), electrical charge-based storage media (e.g.,EPROM, EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive,etc.), and/or other electronically readable storage media. Theelectronic storage 13 may be a separate component within the system 10,or the electronic storage 13 may be provided integrally with one or moreother components of the system 10 (e.g., the processor 11). Although theelectronic storage 13 is shown in FIG. 1 as a single entity, this is forillustrative purposes only. In some implementations, the electronicstorage 13 may comprise a plurality of storage units. These storageunits may be physically located within the same device, or theelectronic storage 13 may represent storage functionality of a pluralityof devices operating in coordination.

FIG. 2 illustrates method 200 for stabilizing views of videos. Theoperations of method 200 presented below are intended to beillustrative. In some implementations, method 200 may be accomplishedwith one or more additional operations not described, and/or without oneor more of the operations discussed. In some implementations, two ormore of the operations may occur substantially simultaneously.

In some implementations, method 200 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, a central processingunit, a graphics processing unit, a microcontroller, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operation of method 200 in response to instructions storedelectronically on one or more electronic storage mediums. The one ormore processing devices may include one or more devices configuredthrough hardware, firmware, and/or software to be specifically designedfor execution of one or more of the operation of method 200.

Referring to FIG. 2 and method 200, at operation 201, video informationmay be obtained. The video information may define spherical videocontent. The spherical video content may have a progress length. Thespherical video content may include spherical video frames. Thespherical video frames may define visual content viewable from a pointof view as a function of progress through the progress length. In someimplementation, operation 201 may be performed by a processor componentthe same as or similar to the video information component 102 (Shown inFIG. 1 and described herein).

At operation 202, viewing information for the spherical video contentmay be obtained. The viewing information may defining a trajectory ofviewing directions for the spherical video content. The trajectory ofviewing direction may include viewing directions from the point of viewas the function of progress through the progress length. In someimplementation, operation 202 may be performed by a processor componentthe same as or similar to the viewing information component 104 (Shownin FIG. 1 and described herein).

At operation 203, margin information may be obtained. The margininformation may define a margin constraint that limits deviations fromthe trajectory of viewing directions. In some implementation, operation203 may be performed by a processor component the same as or similar tothe margin information component 106 (Shown in FIG. 1 and describedherein).

At operation 204, stabilized viewing information may be determined basedon the viewing information and the margin information. The stabilizedviewing information may define a stabilized trajectory of viewingdirections for the spherical video content. The stabilized trajectory ofviewing directions may include stabilized viewing directions from thepoint of view as the function of progress through the progress length.Differences between the trajectory of viewing directions and thestabilized trajectory of viewing directions may be limited by the marginconstraint. In some implementation, operation 204 may be performed by aprocessor component the same as or similar to the stabilizationcomponent 108 (Shown in FIG. 1 and described herein).

At operation 205, the spherical video content may be presented on adisplay based on the stabilized viewing information. In someimplementation, operation 205 may be performed by a processor componentthe same as or similar to the presentation component 110 (Shown in FIG.1 and described herein).

Although the system(s) and/or method(s) of this disclosure have beendescribed in detail for the purpose of illustration based on what iscurrently considered to be the most practical and preferredimplementations, it is to be understood that such detail is solely forthat purpose and that the disclosure is not limited to the disclosedimplementations, but, on the contrary, is intended to covermodifications and equivalent arrangements that are within the spirit andscope of the appended claims. For example, it is to be understood thatthe present disclosure contemplates that, to the extent possible, one ormore features of any implementation can be combined with one or morefeatures of any other implementation.

What is claimed is:
 1. A method of stabilized viewing of spherical videocontent, comprising: obtaining a spherical video having a progresslength; obtaining a trajectory of viewing direction for the sphericalvideo, the trajectory of viewing direction including viewing directionsfor moments within the progress length of the spherical video;generating a stabilized trajectory of viewing direction for thespherical video based on multiple margin constraints, separate marginconstraints limiting deviation of the stabilized trajectory of viewingdirection from the trajectory of viewing direction with respect toseparate axes of rotation for the viewing directions; and generating astabilized video based on the stabilized viewing trajectory of viewingdirection for the spherical video.
 2. The method of claim 1, wherein thetrajectory of viewing direction is identified by a user as a function ofprogress through the progress length of the spherical video.
 3. Themethod of claim 2, wherein the trajectory of viewing direction isidentified by the user via user interaction with a touchscreen display.4. The method of claim 2, wherein the trajectory of viewing direction isidentified by the user via user rotation of a mobile device.
 5. Themethod of claim 1, wherein the stabilized trajectory of viewingdirection is generated to account for jerkiness or shakiness in thetrajectory of viewing direction.
 6. The method of claim 1, wherein theseparate axes of rotation for the viewing directions include a yaw axis,a pitch axis, and a roll axis.
 7. The method of claim 6, wherein themultiple margin constraints include a yaw axis constraint, a pitch axisconstraint, and a roll axis constraint.
 8. The method of claim 7,wherein: the yaw axis constraint limits deviation of the stabilizedtrajectory of viewing direction from the trajectory of viewing directionfor rotation about the yaw axis; the pitch axis constraint limitsdeviation of the stabilized trajectory of viewing direction from thetrajectory of viewing direction for rotation about the pitch axis; andthe roll axis constraint limits deviation of the stabilized trajectoryof viewing direction from the trajectory of viewing direction forrotation about the roll axis.
 9. The method of claim 7, wherein thestabilized trajectory of viewing direction for the spherical video isgenerated further based on a viewing size constraint.
 10. The method ofclaim 9, wherein the viewing size constraint limits deviation of aviewing size associated with the stabilized trajectory of viewingdirection from a viewing size associated with the trajectory of viewingdirection.
 11. A system for stabilizing viewing of spherical videocontent, comprising: one or more physical processors configured bymachine-readable instructions to: obtain a spherical video having aprogress length; obtain a trajectory of viewing direction for thespherical video, the trajectory of viewing direction including viewingdirections for moments within the progress length of the sphericalvideo; generate a stabilized trajectory of viewing direction for thespherical video based on multiple margin constraints, separate marginconstraints limiting deviation of the stabilized trajectory of viewingdirection from the trajectory of viewing direction with respect toseparate axes of rotation for the viewing directions; and generate astabilized video based on the stabilized viewing trajectory of viewingdirection for the spherical video.
 12. The system of claim 11, whereinthe trajectory of viewing direction is identified by a user as afunction of progress through the progress length of the spherical video.13. The system of claim 12, wherein the trajectory of viewing directionis identified by the user via user interaction with a touchscreendisplay.
 14. The system of claim 12, wherein the trajectory of viewingdirection is identified by the user via user rotation of a mobiledevice.
 15. The system of claim 11, wherein the stabilized trajectory ofviewing direction is generated to account for jerkiness or shakiness inthe trajectory of viewing direction.
 16. The system of claim 11, whereinthe separate axes of rotation for the viewing directions include a yawaxis, a pitch axis, and a roll axis.
 17. The system of claim 16, whereinthe multiple margin constraints include a yaw axis constraint, a pitchaxis constraint, and a roll axis constraint.
 18. The system of claim 17,wherein: the yaw axis constraint limits deviation of the stabilizedtrajectory of viewing direction from the trajectory of viewing directionfor rotation about the yaw axis; the pitch axis constraint limitsdeviation of the stabilized trajectory of viewing direction from thetrajectory of viewing direction for rotation about the pitch axis; andthe roll axis constraint limits deviation of the stabilized trajectoryof viewing direction from the trajectory of viewing direction forrotation about the roll axis.
 19. The system of claim 17, wherein thestabilized trajectory of viewing direction for the spherical video isgenerated further based on a viewing size constraint.
 20. The system ofclaim 19, wherein the viewing size constraint limits deviation of aviewing size associated with the stabilized trajectory of viewingdirection from a viewing size associated with the trajectory of viewingdirection.